home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MATH.ARC / PRIME SRC (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  2.4 KB  |  64 lines

  1. 10 * = $0801
  2. 20 ;PRIME SRC
  3. 30 ;P
  4. 40 .S
  5. 50 .D PRIME ML
  6. 60 ;
  7. 70 MAP = $01
  8. 80 COUNT = $3F
  9. 90 STEP = $41
  10. 100 BCDBUF = $55
  11. 110 RESULT = $5A
  12. 120 RORBUF = $5F
  13. 130 CURRENT = $FB
  14. 140 NOTPRIME = $FD
  15. 150 TOD = $DC08
  16. 160 SCRCHR = $E716
  17. 170 ;
  18. 180 START .BYTE 11 8 0 0 158:.BYTE "2061":.BYTE 0 0 0
  19. 190 JMP INIT
  20. 200 ;
  21. 210 DISPLAY STA RORBUF:STX RORBUF+1:LDX #$09:LDA #$00
  22. 220 DISP2 STA BCDBUF,X:DEX:BPL DISP2:LDA #$01:STA BCDBUF
  23. 230 DISP3 CLC:ROR RORBUF+1:ROR RORBUF:BCC DISP5:LDY #$05:LDX #$00:SED:CLC
  24. 240 DISP4 LDA RESULT,X:ADC BCDBUF,X:STA RESULT,X:INX:DEY:BNE DISP4
  25. 250 DISP5 LDY #$05:LDX #$00:SED:CLC
  26. 260 DISP6 LDA BCDBUF,X:ADC BCDBUF,X:STA BCDBUF,X:INX:DEY:BNE DISP6:CLD
  27. 270 LDA RORBUF:BNE DISP3:LDA RORBUF+1:BNE DISP3:LDA #$37:STA MAP
  28. 280 LDA $D6:CMP #$18:BCC DISP7:LDA $D3:CMP #$20:BCC DISP7:LDA #$93:JSR SCRCHR
  29. 290 DISP7 LDX #$05
  30. 300 DISP8 DEX:BEQ DISP9:LDA RESULT,X:BEQ DISP8
  31. 310 DISP9 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:BEQ DISP10:ORA #$30:JSR SCRCHR
  32. 320 DISP10 PLA:AND #$0F:ORA #$30:JSR SCRCHR:DEX:BMI DISP12
  33. 330 DISP11 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR SCRCHR
  34. 340 PLA:AND #$0F:ORA #$30:JSR SCRCHR:DEX:BPL DISP11
  35. 350 DISP12 LDA #$20:JSR SCRCHR:SEI:LDA #$30:STA MAP:RTS
  36. 360 ;
  37. 370 INIT LDA #$93:JSR SCRCHR:LDA #$9F:JSR SCRCHR:LDA #$0B:STA $D020:STA $D021
  38. 380 SEI:LDA #$30:STA MAP:LDA #<TABLE:STA CURRENT:LDA #>TABLE:STA CURRENT+1
  39. 390 LDA #$00:STA COUNT:STA COUNT+1:TAY
  40. 400 INIT2 STA (CURRENT),Y:INY:BNE INIT2
  41. 410 INC CURRENT+1:LDX CURRENT+1:CPX #$FF:BCC INIT2:STY CURRENT
  42. 420 INIT3 STA (CURRENT),Y:DEY:BNE INIT3
  43. 430 LDA #<TABLE:STA CURRENT:LDA #>TABLE:STA CURRENT+1:LDA #$37:STA MAP
  44. 440 LDA TOD+7:AND #$7F:STA TOD+7:LDX #$04:LDA #$00
  45. 450 INIT4 STA TOD,X:DEX:BPL INIT4:STX TABLE+1:SEI:LDA #$30:STA MAP
  46. 460 ;
  47. 470 LOOP INC CURRENT:BNE LOOP2:INC CURRENT+1:BEQ QUIT
  48. 480 LOOP2 LDA (CURRENT),Y:BNE LOOP:INC COUNT:BNE LOOP3:INC COUNT+1
  49. 490 LOOP3 LDA CURRENT:STA NOTPRIME:SEC:SBC #<TABLE:STA STEP
  50. 500 LDA CURRENT+1:STA NOTPRIME+1:SBC #>TABLE:STA STEP+1:LDX #$01:CLC
  51. 510 LOOP4 LDA NOTPRIME:ADC STEP:STA NOTPRIME:LDA NOTPRIME+1:ADC STEP+1
  52. 520 STA NOTPRIME+1:BCC LOOP5:LDA STEP:LDX STEP+1:JSR DISPLAY:BNE LOOP
  53. 530 LOOP5 TXA:STA (NOTPRIME),Y:BCC LOOP4
  54. 540 ;
  55. 550 QUIT LDA #$37:STA MAP:LDA #$0D:JSR SCRCHR:LDA COUNT:LDX COUNT+1:JSR DISPLAY
  56. 560 LDA #$37:STA MAP:CLI:LDA #$20:JSR SCRCHR:LDY #$03
  57. 570 TIME LDA TOD,Y:AND #$7F:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR SCRCHR:PLA
  58. 580 AND #$0F:ORA #$30:JSR SCRCHR:CPY #$02:BCC TIME2:LDA #$3A:.BYTE 44
  59. 590 TIME2 LDA #$2E:JSR SCRCHR:DEY:BNE TIME:LDA TOD:AND #$0F:ORA #$30:JMP SCRCHR
  60. 600 ;
  61. 610 TABLE .BYTE 0 0 0
  62. 620 ;
  63. 630 .END PRIME SRC
  64.